package com.ruoyi.common.utils;

import com.ruoyi.common.sms.mw.CHttpPost;
import com.ruoyi.common.sms.mw.ConfigManager;
import com.ruoyi.common.sms.mw.Message;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.UUID;

/**
 * 短信验证码
 */
@Service
public class SMSUtil {

    // 日期格式定义

    // 用户账号 梦网 服务账号 其他短信
    public static String userids = "J98569";
    //生产账号 验证码
    public static String userid = "J98568";
    // 用户密码
    public static String pwds = "256981";

    public static String pwd = "320321";
    //主IP信息  必填
    public static String masterIpAddress = "61.145.229.28:8803";
    //备IP1  选填
    public static String ipAddress1 = "61.145.229.28:8803";
    //备IP2  选填
    public static String ipAddress2 = null;
    //备IP3  选填
    public static String ipAddress3 = null;

    /**
     * 验证码  J98568
     * @param sendTarget
     * @param content
     * @return
     */
    public static String sendSms(String sendTarget, String content){
        StringBuffer msgId = new StringBuffer();
        String vcodeResult=null;
        try
        {
            //设置IP
            ConfigManager.setIpInfo(masterIpAddress, ipAddress1, ipAddress2, ipAddress3);
            //密码是否加密   true：密码加密;false：密码不加密
            ConfigManager.IS_ENCRYPT_PWD = true;
            boolean isEncryptPwd = ConfigManager.IS_ENCRYPT_PWD;
            // 参数类
            Message message = new Message();
            // 实例化短信处理对象
            CHttpPost cHttpPost = new CHttpPost();

            // 设置账号   将 userid转成大写,以防大小写不一致
            message.setUserid(userid.toUpperCase());

            //判断密码是否加密。
            //密码加密，则对密码进行加密
            if(isEncryptPwd)
            {
                // 设置时间戳
                SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmss");
                String timestamp = sdf.format(Calendar.getInstance().getTime());
                message.setTimestamp(timestamp);

                // 对密码进行加密
                String encryptPwd = cHttpPost.encryptPwd(message.getUserid(),pwd, message.getTimestamp());
                // 设置加密后的密码
                message.setPwd(encryptPwd);

            }else
            {
                // 设置密码
                message.setPwd(pwd);
            }

            // 设置手机号码 此处只能设置一个手机号码
            message.setMobile(sendTarget);
            // 设置内容
            message.setContent(content);
            // 设置扩展号
            message.setExno("11");
            // 用户自定义流水编号
            message.setCustid(UUID.randomUUID().toString());
            // 自定义扩展数据
            message.setExdata("abcdef");
            //业务类型
            message.setSvrtype("SMS001");

            // 返回的平台流水编号等信息

            // 返回值
            int result = -310099;
            // 发送短信
            result = cHttpPost.singleSend(message, msgId);
            String resultStr="";
            // result为0:成功;非0:失败
            if(result == 0)
            {
//				System.out.println("单条发送提交成功！");
                resultStr="0";
                //System.out.println(msgId.toString());
                vcodeResult="SUCCESS";
            }
            else
            {
                resultStr="1";
                vcodeResult="FAILURE";

            }
        }
        catch (Exception e)
        {
            //异常处理
            e.printStackTrace();
        }
        return vcodeResult;

    }


    /**
     * 客户下单之后，短信提醒
     * @param sendTarget
     * @param content
     * @return
     */
    public static String sendSmsPurchase(String sendTarget, String content){
        StringBuffer msgId = new StringBuffer();
        String vcodeResult=null;
        try
        {
            //设置IP
            ConfigManager.setIpInfo(masterIpAddress, ipAddress1, ipAddress2, ipAddress3);
            //密码是否加密   true：密码加密;false：密码不加密
            ConfigManager.IS_ENCRYPT_PWD = true;
            boolean isEncryptPwd = ConfigManager.IS_ENCRYPT_PWD;
            // 参数类
            Message message = new Message();
            // 实例化短信处理对象
            CHttpPost cHttpPost = new CHttpPost();

            // 设置账号   将 userid转成大写,以防大小写不一致
            message.setUserid(userids.toUpperCase());

            //判断密码是否加密。
            //密码加密，则对密码进行加密
            if(isEncryptPwd)
            {
                // 设置时间戳
                SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmss");
                String timestamp = sdf.format(Calendar.getInstance().getTime());
                message.setTimestamp(timestamp);

                // 对密码进行加密
                String encryptPwd = cHttpPost.encryptPwd(message.getUserid(),pwds, message.getTimestamp());
                // 设置加密后的密码
                message.setPwd(encryptPwd);

            }else
            {
                // 设置密码
                message.setPwd(pwds);
            }

            // 设置手机号码 此处只能设置一个手机号码
            message.setMobile(sendTarget);
            // 设置内容
            message.setContent(content);
            // 设置扩展号
            message.setExno("11");
            // 用户自定义流水编号
            message.setCustid(UUID.randomUUID().toString());
            // 自定义扩展数据
            message.setExdata("abcdef");
            //业务类型
            message.setSvrtype("SMS001");

            // 返回的平台流水编号等信息

            // 返回值
            int result = -310099;
            // 发送短信
            result = cHttpPost.singleSend(message, msgId);
            String resultStr="";
            // result为0:成功;非0:失败
            if(result == 0)
            {
//				System.out.println("单条发送提交成功！");
                resultStr="0";
                //System.out.println(msgId.toString());
                vcodeResult="SUCCESS";
            }
            else
            {
                resultStr="1";
                vcodeResult="FAILURE";

            }
        }
        catch (Exception e)
        {
            //异常处理
            e.printStackTrace();
        }
        return vcodeResult;

    }

}
